package com.aier.school.service;


import java.util.List;
import java.util.Map;

import com.aier.classes.entity.ClassStudent;
import com.aier.school.entity.SchoolIcCard;
import com.aier.school.entity.UserIcardInfo;
import com.aier.school.entity.UserIcardRecord;


public interface ISchoolIcCardService {


    /**
     * 根据条件查询学校的IC卡信息
     * @return
     */
    Map<String, Object> searchSchoolCardsByCondition(int page,
            int pagesize,int sid,String cardnum,short state,String account);
    
    /**
     * 根据条件查询学校的IC卡信息
     * @return
     */
    Map<String, Object> searchSchoolCardsByConditionNew(int page,
            int pagesize,String sname,String cardnum,short state);
    
    List<SchoolIcCard> searchSchoolCardList(Integer sid);
    
    
    /**
     * 查询学校的卡的卡号列表
     * @return
     */
    Map<String, Object> searchSchoolCardsByCondition(int page,
            int proxyCardListPagesize, Integer sid, Long tid);
    
    /**
     * 查询学校的卡的卡号列表
     * @return
     */
    List<String> searchSchoolCardNumList(Integer sid);

    /**
     * 查询学校的卡的卡号列表(已绑定)
     * @return
     */
    List<String> searchSchoolBindCardNumList(Integer sid);
    
    /**
     * 查询学校的卡的卡号列表(未绑定)
     * @return
     */
    List<String> searchSchoolUnbindCardNumList(Integer sid);
    
    /**
     * 根据卡号和验证码查询学校卡
     * @return
     */
    SchoolIcCard searchSchoolIcCard(String icnum, String icfoot,Integer sid);
    
    
    /**
     * 修改学校ic卡状态
     * @return
     */
    int updateIcardState(Long icid, short state, Integer sid);

    /**
     * 修改 ic卡状态
     * @return
     */
    int updateIcardState(Long icid, Short state);
    
    /**
     * 绑定学生IC卡
     * @return
     */
    int updateBindCardStudent(Integer sid, Long icid, Long csid);

    /**
     * 绑定教师IC卡
     * @return
     */
    int updateBindCardTeacher(Integer sid, Long icid, Long tid);

    /**
     * 查询学校id卡是否被绑定
     * @return
     */
    int searchBandCard(Integer sid, Long icid);

    /**
     * 学校回收ic卡
     * @return
     */
    int deleteIcard(Long icid);

    /**
     * 查询班级学生的IC卡
     * @return
     */
    Map<String, Object> searchSchoolCardsByCidABuid(int page,
            int proxyCardListPagesize, Long cid, Long buid);

    /**
     * 查询班级学生打卡记录列表
     * @return
     */
    Map<String, Object> searchUserIcardInfoListByCidABuid(int page,
            int pagesize,  Long buid);

    /**
     * 查询某班级的学生打卡记录列表
     * @return
     */    
    Map<String, Object> searchUserIcardInfoListByCid(int page,
            int pagesize, Long cid);

    /**
     * 根据条件 查询 学生打卡记录列表
     * @return
     */    
    Map<String, Object> searchUserIcardInfoListByCondation(int page,
            int pagesize,Integer sid, Long cid,String dayBeginValue, String dayEndValue, String sname);	

	
    List<UserIcardInfo> searchUserIcardInfoListByCondation(Integer sid, Long cid,String dayBeginValue, String dayEndValue, String sname);

    /**
     * 查询卡是否是该学校的卡
     * @return
     */
    SchoolIcCard searchSchoolCard(Integer sid,String cardnum);
    
    /**
     * 根据条件 查询 学生打卡记录列表
     * @return
     */    
    Map<String, Object> searchStuIcardInfoListByCondation(int page,
            int pagesize,Integer sid, Long cid,String dayValue);
    
    /**
     * 根据日期 查询 学校教师打卡记录列表
     * @return
     */    
    Map<String, Object> searchTeaIcardInfoListByDay(int page,
            int pagesize,Integer sid, String dayValue);
    List<UserIcardRecord> searchTeaIcardInfoListByDay(Integer sid, String dayValue);
    
    /**
     * 根据月份 查询 学校某位教师打卡记录列表
     * @return
     */    
    Map<String, Object> searchTeaIcardInfoListByMonth(int page,
            int pagesize,String dayValue,String account,Integer sid);
    List<UserIcardRecord> searchTeaIcardInfoListByMonth(String dayValue,String account,Integer sid);
    
    Map<String, Object> searchTeaIcardInfoListByMonthTid(int page,
            int pagesize,String dayValue,Long tid);
    List<UserIcardRecord> searchTeaIcardInfoListByMonthTid(String dayValue,Long tid);
    
    // 新版
    /**
     * 查询某班级家长的学生列表
     * @param cid
     * @param uid
     * @return
     */
    List<ClassStudent> searchCSByParent(Long uid);
    
    /**
     * 查询个人打卡记录（学生或教师）
     * @param page
     * @param pagesize
     * @param uid
     * @param tid
     * @return
     */
    Map<String, Object> searchSelfIcardInfoList(int page,int pagesize,Long uid,Long tid);
    
    /**
     * 查询某班级某天学生打卡记录列表
     * @return
     */    
    List<UserIcardRecord> searchsearchCSRecordList(Long cid,String dayValue);
    
    /**
     * 班级教师查询某班级的IC卡信息
     * @return
     */
    Map<String, Object> searchClassCardsByCondition(int page,
            int pagesize,Long cid,short state);
    
    /**
     * 根据条件查询学校的IC卡信息
     * @return
     */
    Map<String, Object> searchSchoolCardsList(int page,
            int pagesize,int sid,String cardnum,short state,String name,short identity);
    
    /**
     * 查询打卡时间记录
     */
    List<String>  SearchClassList(Integer TimeType);
}
